/**
 *  axios请求数据
 */
import axios from "axios";
import store from "../store";
import router from "../router";
import { Message } from 'element-ui'
import { showLoading, hideLoading } from '@/utils/loading'


// 创建axios实例 
const service = axios.create({
  baseURL: process.env.VUE_APP_URL, // api 的 VUE_APP_URL
  timeout: 50000 // 请求超时时间(因为需要调试后台,所以设置得比较大)
});

// request拦截器,在请求之前做一些处理
service.interceptors.request.use(
  config => {
    showLoading()  //加载
    if (store.state.token) {
      // 给请求头添加laohu-token
      config.headers.Authorization = store.state.token;
    }
    return config;
  },
  error => {
    console.log(error); // for debug
    Promise.reject(error);
  }
);

// response 拦截器,数据返回后进行一些处理
service.interceptors.response.use(
  response => {
    // if (loadingTimer) {
    hideLoading()  // 关闭加载
    /**
     * code为非20000是抛错 可结合自己业务进行修改
     */
    console.log('请求返回的数据:', response);
    const res = response.data;
    if (response.status == "200") {
      return res;
    } else if (response.status == "603") {
      // code为603代表token已经失效,
      // 提示用户,然后跳转到登陆页面
      Message({
        type: 'error',
        message: '登录过期，请重新登录',
        duration: 1500
      })
      router.push("/login");
    } else {
      Message({
        type: 'error',
        message: '请求失败',
        duration: 1500
      })
      router.push("/login");
      Promise.reject(res.Msg);
    }
  },
  error => {
    hideLoading()
    Message({
      type: 'error',
      message: '网络异常',
      duration: 1500
    })
    Promise.reject("网络异常");
  }
);
export default service
